package main.Game;

import main.Game.Command;

/**
 * 用于通讯的类
 * 实现Serializable类来实现object类的传递
 * @author svitter
 *
 */
public class SendInfor {
	
	public Command  cmd;        	/**	通讯命令*/
	public int      uid;            /** 命令发出者*/
	public int      objid;          /** 命令承担者id*/
	public int      num;            /** 猜测牌所在的位置*/
	public int      val;            /** 猜测牌的值*/
	public String   infor;          /** 需要保存的信息*/
	public String   name;           /** 命令发出者*/
	public String   objName;        /** 命令承担者*/

	public String   inforArray[];   /** 需要批量保存的信息*/
	public Board	temp;			/** 临时board*/
	
	public SendInfor(int uid) {
		this.uid = uid;
	}

	/**
	 * 生成攻击命令
	 * @param 被猜测者id
	 * @param 猜测的排
	 * @param 猜测的数值 
	 * @return	猜测命令
	 */
	public SendInfor attack(int objid, int num ,int val) {
		this.cmd    = Command.ATTACK;
		this.objid      = objid;
		this.num        = num;
		this.val        = val;
		return this;
	}
	
	/**
	 * 设置命令发出者的uid
	 * @param uid
	 */
	public void setUID(int uid) {
		this.uid = uid;
	}
	
	/**
	 * 获取UID
	 * @return
	 */
	public int getUID() {
		return this.uid;
	}

	/**
	 * 生成显示所有牌命令
	 * @return
	 */
	public SendInfor show(int objid) {
		this.cmd 	= Command.SHOW;
		this.objid 	= objid;
		return this;
	}
	
	/**
	 * 带有牌输出信息的show命令
	 * @param a
	 * @return 带有信息的show命令
	 */
	public SendInfor show(String a[]) {
		inforArray = a;
		return this;
	}
	
	/**
	 * 开始游戏后，发送所需牌的信息到客户端
	 * @return
	 */
	public SendInfor start(String a) {
		this.cmd = Command.START;
		this.infor = a;
		return this;
	}
	
	/**
	 * 此时的objid就是分配的id
	 * @return
	 */
	public SendInfor init() {
		this.cmd = Command.INIT;
		return this;
	}
}
